package com.twb.system.controller;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.twb.core.base.Result;
import com.twb.core.base.controller.BaseController;
import com.twb.core.security.annotation.Auth;
import com.twb.core.util.Results;
import com.twb.system.entity.twbUserConfig.vo.SaveTwbUserConfigVo;
import com.twb.system.service.ITwbUserConfigService;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/** 
 * @Title  TwbUserConfigController
 * @Description 用户配置管理
 
 * @author DSY
 * @date 2022-01-27 10:13:37
 */ 
@RestController
@RequestMapping("/system/twbUserConfig")
@Api(tags = "用户配置管理",value="TwbUserConfigController")
public class TwbUserConfigController extends BaseController{
	@Autowired
	ITwbUserConfigService twbUserConfigService;
	
	/**
	 * @Title  search
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@GetMapping("/search")
//	@ApiOperation(value="分页查询")
//	public Result<TwbPageInfo<SearchTwbUserConfigDto>> search(SearchTwbUserConfigVo vo){
//		TwbPageInfo<SearchTwbUserConfigDto> result = twbUserConfigService.searchTwbUserConfig(vo);
//		return Results.successWithData(result);
//	}
	
	/**
	 * @Title  getById
	 * @Description 根据ID获取详情
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@GetMapping("/getById")
//	@ApiOperation(value="根据ID获取详情")
//	public Result<GetTwbUserConfigByIdDto> getById(
//			@NotBlank
//			@RequestParam
//			@ApiParam(value="主键",name="id",required=true)
//			String id){
//		TwbUserConfig twbUserConfig = twbUserConfigService.getById(id);
//		if(twbUserConfig == null) {
//			return Results.failure("数据不存在");
//		}
//		GetTwbUserConfigByIdDto dto = new GetTwbUserConfigByIdDto();
//		BeanUtils.copyNotNullProperties(twbUserConfig, dto);
//		return Results.successWithData(dto);
//	}
	
	/**
	 * @Title  save
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
	@Auth(verifyURL = false)
	@PostMapping("/saveOrUpdate")
	@ApiOperation(value="保存或更新信息，如果userId在表里存在，则自动更新")
	public Result<String> saveOrUpdate(@Valid SaveTwbUserConfigVo vo){
		String userId = vo.getUserId();
		if(StringUtils.isBlank(userId)) {
			userId = this.getLoginUser().getId();
			vo.setUserId(userId);
		}
		boolean result = twbUserConfigService.saveTwbUserConfig(vo);
		if(result) {
			return Results.success("保存成功");
		}else {
			return Results.failure("保存失败");
		}
	}
	
	/**
	 * @Title deleteById
	 * @Description 删除用户配置
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2022年1月27日 上午11:32:50
	 */
	@Auth(verifyURL = false)
	@PostMapping("/deleteByUserIdAndType")
	@ApiOperation(value="删除用户配置")
	public Result<String> deleteByUserIdAndType(
			@RequestParam
			@ApiParam(value="用户ID，默认当前登录用户",name="userId",required=false)
			String userId,
			@NotBlank
			@RequestParam
			@ApiParam(value="配置类型（1：表格列配置；2：系统配置）",name="configType",required=true)
			String configType){
		if(StringUtils.isBlank(userId)) {
			userId = this.getLoginUser().getId();
		}
		boolean result = twbUserConfigService.deleteTwbUserConfigByUserIdAndType(userId,configType);
		if(result) {
			return Results.success("删除成功");
		}else {
			return Results.failure("删除失败");
		}
	}
	
	/**
	 * @Title  updateById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@PostMapping("/updateById")
//	@ApiOperation(value="更新信息")
//	public Result<String> updateById(@Valid UpdateTwbUserConfigByIdVo vo){
//		boolean result = twbUserConfigService.updateTwbUserConfigById(vo);
//		if(result) {
//			return Results.success("更新成功");
//		}else {
//			return Results.failure("更新失败");
//		}
//	}
	
	
	/**
	 * @Title  deleteById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@PostMapping("/deleteById")
//	@ApiOperation(value="删除信息")
//	public Result<String> deleteById(
//			@NotBlank
//			@RequestParam
//			@ApiParam(value="主键",name="id",required=true)
//			String id){
//		boolean result = twbUserConfigService.deleteTwbUserConfigById(id);
//		if(result) {
//			return Results.success("删除成功");
//		}else {
//			return Results.failure("删除失败");
//		}
//	}
	
	
	/**
	 * @Title  deleteBatchByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@PostMapping("/batchDeleteByIds")
//	@ApiOperation(value="批量删除信息")
//	public Result<String> deleteBatchByIds(
//			@NotBlank
//			@RequestParam
//			@ApiParam(value="主键集合",name="id",required=true)
//			String ids){
//		boolean result = twbUserConfigService.deleteTwbUserConfigByIds(ids);
//		if(result) {
//			return Results.success("删除成功");
//		}else {
//			return Results.failure("删除失败");
//		}
//	}
	
	
	/**
	 * @Title  logicDeleteById
	 * @Description 逻辑删除信息
	 * @param id
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@PostMapping("/logicDeleteById")
//	@ApiOperation(value = "逻辑删除信息")
//	public Result<String> logicDeleteById(
//			@NotBlank
//			@RequestParam
//			@ApiParam(value="主键",name="id",required=true)
//			String id){
//		TwbUserConfig record = twbUserConfigService.get(id);
//		if(null == record) {
//			return Results.failure("信息不存在");
//		}
//		record = new TwbUserConfig();
//		record.setId(id);
//		twbUserConfigService.setUpdateInfo(record);
//		record.setIsdel(1);
//		int result = twbUserConfigService.updateSelective(record);
//		if(result>0) {
//			return Results.success("删除成功");
//		}else {
//			return Results.failure("删除失败");
//		}
//	}

	
	/**
	 * @Title  logicBatchDeleteByIds
	 * @Description 批量逻辑删除
	 * @param ids
	 * @return
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyToken = true)
//	@PostMapping("/logicBatchDeleteByIds")
//	@ApiOperation(value = "逻辑删除信息")
//	public Result<String> logicBatchDeleteByIds(
//			@NotBlank
//			@RequestParam
//			@ApiParam(value="主键集合",name="id",required=true)
//			String ids){
//		int result = twbUserConfigService.logicBatchDeleteTwbUserConfigByIds(ids);
//		if(result>0) {
//			return Results.success("删除成功");
//		}else {
//			return Results.failure("删除失败");
//		}
//	}

	
	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @param request
	 * @return
	 * @throws Exception
	 * @author DSY
	 * @date 2022-01-27 10:13:37
	 */
//	@Auth(verifyURL=false)
//	@GetMapping("/exportExcel")
//	@ApiOperation(value="导出excel")
//	public void exportExcel(SearchTwbUserConfigVo vo, HttpServletResponse response) throws Exception{
//		twbUserConfigService.exportExcel(vo, response);
//	}
}